home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / PCCardEnablerPlugin.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  18.0 KB  |  536 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        PCCardEnablerPlugin.h
  3.  
  4.      Contains:    Interfacer for PCCard Manager 3.0
  5.  
  6.      Version:    Technology:    Mac OS 8.5
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1997-1999 by Apple Computer, Inc. and SystemSoft Corporation.  All rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __PCCARDENABLERPLUGIN__
  18. #define __PCCARDENABLERPLUGIN__
  19.  
  20. #ifndef __MACTYPES__
  21.     #include <MacTypes.h>
  22. #endif
  23.  
  24. #ifndef __NAMEREGISTRY__
  25.     #include <NameRegistry.h>
  26. #endif
  27.  
  28. #ifndef __INTERRUPTS__
  29.     #include <Interrupts.h>
  30. #endif
  31.  
  32. #ifndef __PCCARD__
  33.     #include <PCCard.h>
  34. #endif
  35.  
  36.  
  37.  
  38.  
  39. #if PRAGMA_ONCE
  40. #pragma once
  41. #endif
  42.  
  43. #ifdef __cplusplus
  44. extern "C" {
  45. #endif
  46.  
  47. #if PRAGMA_IMPORT
  48. #pragma import on
  49. #endif
  50.  
  51. #if PRAGMA_STRUCT_ALIGN
  52.     #pragma options align=power
  53. #elif PRAGMA_STRUCT_PACKPUSH
  54.     #pragma pack(push, 2)
  55. #elif PRAGMA_STRUCT_PACK
  56.     #pragma pack(2)
  57. #endif
  58.  
  59. #ifndef __CARDSERVICES__
  60. /*
  61.     NOTE: These prototypes conflict with CardServices.*
  62.           You cannot use both PCCardEnablerPlugin.h and CardServices.h
  63.           
  64. */
  65.  
  66. /*    Copyright:    (c) 1996 SystemSoft Corporation, all rights reserved. */
  67. /*------------------------------------------------------------------------------------
  68.     Card Services calls exported by the Family
  69. ------------------------------------------------------------------------------------*/
  70. /*    Card Services for Card Enablers*/
  71.  
  72. EXTERN_API_C( OSStatus )
  73. CSGetCardServicesInfo            (UInt32 *                socketCount,
  74.                                  UInt32 *                complianceLevel,
  75.                                  UInt32 *                version);
  76.  
  77.  
  78. /* Function prototypes for tuples calls */
  79.  
  80. EXTERN_API_C( OSStatus )
  81. CSGetFirstTuple                    (PCCardSocket             socket,
  82.                                  UInt32                 device,
  83.                                  PCCardTupleIterator     tupleIterator,
  84.                                  Byte                     desiredTuple,
  85.                                  void *                    tupleData,
  86.                                  ByteCount *            tupleBufferSize,
  87.                                  Byte *                    foundTuple);
  88.  
  89. EXTERN_API_C( OSStatus )
  90. CSGetNextTuple                    (PCCardTupleIterator     tupleIterator,
  91.                                  Byte                     desiredTuple,
  92.                                  void *                    tupleData,
  93.                                  ByteCount *            tupleBufferSize,
  94.                                  Byte *                    foundTuple);
  95.  
  96.  
  97. /* Function prototypes for window calls*/
  98.  
  99. EXTERN_API_C( OSStatus )
  100. CSRequestWindow                    (PCCardSocket             vSocket,
  101.                                  UInt32                 device,
  102.                                  PCCardWindowAttributes  windowAttributes,
  103.                                  PCCardAccessSpeed         windowSpeed,
  104.                                  LogicalAddress *        windowBase,
  105.                                  PCCardWindowSize *        windowSize,
  106.                                  PCCardWindowOffset *    windowOffset,
  107.                                  PCCardWindowID *        requestedWindow);
  108.  
  109. EXTERN_API_C( OSStatus )
  110. CSReleaseWindow                    (PCCardWindowID         windowToRelease);
  111.  
  112. EXTERN_API_C( OSStatus )
  113. CSModifyWindow                    (PCCardWindowID         windowToModify,
  114.                                  PCCardWindowType         windowAttributes,
  115.                                  PCCardAccessSpeed         memorySpeed,
  116.                                  PCCardWindowOffset *    windowOffset);
  117.  
  118. EXTERN_API_C( OSStatus )
  119. CSGetWindowBaseAddress            (PCCardWindowID         window,
  120.                                  LogicalAddress *        baseAddress);
  121.  
  122. EXTERN_API_C( OSStatus )
  123. CSInquireWindow                    (PCCardSocket             vSocket,
  124.                                  UInt32                 device,
  125.                                  PCCardWindowID         windowID,
  126.                                  PCCardWindowAttributes * windowAttributes,
  127.                                  PCCardAccessSpeed *    windowParam,
  128.                                  UInt32 *                windowBase,
  129.                                  PCCardWindowSize *        windowSize,
  130.                                  PCCardWindowOffset *    windowOffset);
  131.  
  132. /* Function prototypes for CIS calls*/
  133.  
  134. EXTERN_API_C( OSStatus )
  135. CSValidateCIS                    (PCCardSocket             vSocket,
  136.                                  UInt32                 device,
  137.                                  UInt32 *                cisChainCount);
  138.  
  139. EXTERN_API_C( OSStatus )
  140. CSGetDeviceCount                (PCCardSocket             vSocket,
  141.                                  UInt32 *                deviceCount);
  142.  
  143.  
  144. /* Function prototypes for Status calls*/
  145.  
  146. EXTERN_API_C( OSStatus )
  147. CSGetStatus                        (PCCardSocket             vSocket,
  148.                                  UInt32 *                currentState,
  149.                                  UInt32 *                changedState,
  150.                                  PCCardVoltage *        Vcc,
  151.                                  PCCardVoltage *        Vpp);
  152.  
  153.  
  154. /* Function prototypes for configuration calls*/
  155.  
  156. EXTERN_API_C( OSStatus )
  157. CSRequestConfiguration            (PCCardSocket             vSocket,
  158.                                  UInt32                 device,
  159.                                  PCCardConfigOptions     configOptions,
  160.                                  PCCardInterfaceType     socketInterface,
  161.                                  PCCardCustomInterfaceID  customInterface,
  162.                                  PCCardVoltage             vcc,
  163.                                  PCCardVoltage             vpp,
  164.                                  PCCardIRQ                 IRQ,
  165.                                  PCCardDMA                 DMA,
  166.                                  UInt32                 configRegBaseAddress,
  167.                                  PCCardConfigPresentMask  configRegPresentMask,
  168.                                  PCCardFunctionConfigReg * configReg);
  169.  
  170. EXTERN_API_C( OSStatus )
  171. CSModifyConfiguration            (PCCardSocket             vSocket,
  172.                                  UInt32                 device,
  173.                                  PCCardConfigOptions     modifyAttributes,
  174.                                  PCCardIRQ                 IRQ,
  175.                                  PCCardDMA                 DMA,
  176.                                  PCCardVoltage             Vpp);
  177.  
  178. EXTERN_API_C( OSStatus )
  179. CSReleaseConfiguration            (PCCardSocket             vSocket,
  180.                                  UInt32                 device);
  181.  
  182. EXTERN_API_C( OSStatus )
  183. CSSetRingIndicate                (PCCardSocket             vSocket,
  184.                                  Boolean                 setRingIndicate);
  185.  
  186. EXTERN_API_C( OSStatus )
  187. CSResetFunction                    (PCCardSocket             vSocket,
  188.                                  UInt32                 device);
  189.  
  190. EXTERN_API_C( OSStatus )
  191. CSReadConfigurationRegister        (PCCardSocket             vSocket,
  192.                                  UInt32                 device,
  193.                                  PCCardConfigPresentMask  whichRegister,
  194.                                  UInt32                 configRegBaseAddress,
  195.                                  UInt8 *                registerValue);
  196.  
  197. EXTERN_API_C( OSStatus )
  198. CSWriteConfigurationRegister    (PCCardSocket             vSocket,
  199.                                  UInt32                 device,
  200.                                  PCCardConfigPresentMask  whichRegister,
  201.                                  UInt32                 configRegBaseAddress,
  202.                                  UInt8                     registerValue);
  203.  
  204. /* Function prototypes for Client Support calls*/
  205. EXTERN_API_C( OSStatus )
  206. CSRegisterClient                (PCCardSocket             vSocket,
  207.                                  PCCardEventMask         eventMask,
  208.                                  PCCardEventHandler     clientCallBack,
  209.                                  void *                    clientParam,
  210.                                  PCCardClientID *        newClientID);
  211.  
  212. EXTERN_API_C( OSStatus )
  213. CSDeRegisterClient                (PCCardClientID         theClientID);
  214.  
  215. EXTERN_API_C( OSStatus )
  216. CSSetEventMask                    (PCCardClientID         theClientID,
  217.                                  PCCardEventMask         newEventMask);
  218.  
  219. EXTERN_API_C( OSStatus )
  220. CSGetEventMask                    (PCCardClientID         theClientID,
  221.                                  PCCardEventMask *        newEventMask);
  222.  
  223. EXTERN_API_C( OSStatus )
  224. CSRegisterTimer                    (PCCardClientID         registeredClientID,
  225.                                  PCCardTimerID *        lpNewTimerID,
  226.                                  long                     delay);
  227.  
  228. EXTERN_API_C( OSStatus )
  229. CSDeRegisterTimer                (PCCardTimerID             timerID);
  230.  
  231. /* Function prototypes for CardBus Config Space access*/
  232. EXTERN_API_C( OSStatus )
  233. CSReadCardBusConfigSpace        (PCCardSocket             vSocket,
  234.                                  UInt32                 device,
  235.                                  UInt32                 configOffset,
  236.                                  Byte *                    data,
  237.                                  UInt32                 dataSize);
  238.  
  239. EXTERN_API_C( OSStatus )
  240. CSWriteCardBusConfigSpace        (PCCardSocket             vSocket,
  241.                                  UInt32                 device,
  242.                                  UInt32                 configOffset,
  243.                                  Byte *                    data,
  244.                                  UInt32                 dataSize);
  245.  
  246. /*------------------------------------------------------------------------------------
  247.     Card Enabler Types
  248. ------------------------------------------------------------------------------------*/
  249. enum {
  250.     kUnknownDeviceType            = FOUR_CHAR_CODE('unkn'),        /* class-code = 0x00 */
  251.     kSCSIDeviceType                = FOUR_CHAR_CODE('scsi'),        /* class-code = 0x01, sub-class = 0x00 */
  252.     kBlockDeviceType            = FOUR_CHAR_CODE('blok'),        /* class-code = 0x01, sub-class = 0xXX */
  253.     kNetworkDeviceType            = FOUR_CHAR_CODE('netw'),        /* class-code = 0x02 */
  254.     kDisplayDeviceType            = FOUR_CHAR_CODE('dspl'),        /* class-code = 0x03 */
  255.     kMultimediaDeviceType        = FOUR_CHAR_CODE('mmdv'),        /* class-code = 0x04 */
  256.     kMemoryDeviceType            = FOUR_CHAR_CODE('mem '),        /* class-code = 0x05 */
  257.     kBridgeDeviceType            = FOUR_CHAR_CODE('brdg'),        /* class-code = 0x06 */
  258.     kCommDeviceType                = FOUR_CHAR_CODE('comm'),        /* class-code = 0x07 */
  259.     kPeripheralDeviceType        = FOUR_CHAR_CODE('sysp'),        /* class-code = 0x08 */
  260.     kInputDeviceType            = FOUR_CHAR_CODE('inpt'),        /* class-code = 0x09 */
  261.     kDockingDeviceType            = FOUR_CHAR_CODE('dock'),        /* class-code = 0x0A */
  262.     kProcessorDeviceType        = FOUR_CHAR_CODE('proc'),        /* class-code = 0x0B */
  263.     kFirewireBusDeviceType        = FOUR_CHAR_CODE('firw'),        /* class-code = 0x0C, sub-class = 0x00 */
  264.     kACCESSBusDeviceType        = FOUR_CHAR_CODE('accs'),        /* class-code = 0x0C, sub-class = 0x01 */
  265.     kSSABusDeviceType            = FOUR_CHAR_CODE('ssa '),        /* class-code = 0x0C, sub-class = 0x02 */
  266.     kUSBBusDeviceType            = FOUR_CHAR_CODE('usb '),        /* class-code = 0x0C, sub-class = 0x03 */
  267.     kFibreBusDeviceType            = FOUR_CHAR_CODE('fibr'),        /* class-code = 0x0C, sub-class = 0x04 */
  268.     kByteDeviceType                = FOUR_CHAR_CODE('byte'),        /* class-code = 0x?? */
  269.     kSerialDeviceType            = FOUR_CHAR_CODE('ser '),        /* class-code = 0x?? */
  270.     kParallelDeviceType            = FOUR_CHAR_CODE('parl'),        /* class-code = 0x?? */
  271.     kAIMSDeviceType                = FOUR_CHAR_CODE('aims')        /* class-code = 0x?? */
  272. };
  273.  
  274. typedef OSType                             PCDeviceType;
  275. enum {
  276.     kAttributeType                = 0,
  277.     kMemoryType                    = 1,
  278.     kIOType                        = 2
  279. };
  280.  
  281. typedef UInt32                             PCCardMemoryType;
  282. enum {
  283.     kUnknown                    = FOUR_CHAR_CODE('unkn'),
  284.     kPCCard16                    = FOUR_CHAR_CODE('pc16'),
  285.     kCardBus                    = FOUR_CHAR_CODE('cdbs')
  286. };
  287.  
  288. typedef OSType                             PCCardArchitectureType;
  289. #define kNodeNameName                            "name"
  290. #define k16BitPCCardName                        "16bitcard"
  291. #define kCardbusPropertyName                    "cardbus"
  292. #define kNodeCompatiblePropertyName            "compatible"
  293. #define kDevice_TypeName                        "device_type"
  294. #define kDriverISTPropertyName                    "driver-ist"
  295. #define kFCRAccessPropertyName                    "FCRAccess"
  296. #define kConfigRegPropertyName                    "ConfigRegValues"
  297. #define kNodeTypePropertyName                    "PCCardNodeType"
  298. #define kDeviceNumberPropertName                "DeviceNumber"
  299. #define kSocketNumberPropertName                "SocketNumber"
  300.  
  301. /*------------------------------------------------------------------------------------
  302.   Plugin Dispatch Table
  303. ------------------------------------------------------------------------------------*/
  304. enum {
  305.     kServiceTypePCCardEnabler    = FOUR_CHAR_CODE('card'),
  306.     kPCCardEnablerPluginVersion    = 0x00000001,
  307.     kPCCardEnablerPluginCurrentVersion = kPCCardEnablerPluginVersion
  308. };
  309.  
  310. /*    Card Enabler Entrypoints*/
  311. typedef CALLBACK_API_C( OSStatus , CEValidateHardwareProc )(const RegEntryID *cardRef);
  312. typedef CALLBACK_API_C( OSStatus , CEInitializeProc )(const RegEntryID *cardRef, Boolean replacingOld);
  313. typedef CALLBACK_API_C( OSStatus , CECleanupProc )(const RegEntryID *cardRef, Boolean beingReplaced);
  314. typedef CALLBACK_API_C( OSStatus , CEPowerManagementProc )(const RegEntryID *lpCardEntry, PCCardPowerOptions powerLevel);
  315. typedef CALLBACK_API_C( OSStatus , CEHandleEventProc )(const RegEntryID *cardRef, PCCardEvent theEvent);
  316. typedef CALLBACK_API_C( OSStatus , CEGetCardInfoProc )(const RegEntryID *cardRef, PCCardDevType *cardType, PCCardSubType *cardSubType, StringPtr cardName, StringPtr vendorName);
  317. typedef CALLBACK_API_C( OSStatus , CEAddCardPropertiesProc )(const RegEntryID *cardRef);
  318. typedef CALLBACK_API_C( OSStatus , CEGetDeviceCountProc )(const RegEntryID *cardRef, ItemCount *numberOfDevices);
  319. typedef CALLBACK_API_C( OSStatus , CEGetDeviceNameProc )(UInt32 socketNumber, UInt32 deviceNumber, char *deviceName);
  320. typedef CALLBACK_API_C( OSStatus , CEGetDeviceCompatibleProc )(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, char *name);
  321. typedef CALLBACK_API_C( OSStatus , CEGetDeviceTypeProc )(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, PCDeviceType *lpDeviceType);
  322. typedef CALLBACK_API_C( OSStatus , CEGetDeviceTypeNameProc )(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, char *name);
  323. typedef CALLBACK_API_C( OSStatus , CEAddDevicePropertiesProc )(const RegEntryID *deviceRef, UInt32 device);
  324. typedef CALLBACK_API_C( OSStatus , CEConfigureDeviceProc )(const RegEntryID *deviceRef, UInt32 deviceNumber);
  325. typedef CALLBACK_API_C( OSStatus , CEFinalizeDeviceProc )(UInt32 socket, UInt32 device, const RegEntryID *deviceRef);
  326. typedef CALLBACK_API_C( OSStatus , CEValidateCISProc )(UInt32 socket, UInt32 device, UInt32 *lpCISChainCount);
  327. typedef CALLBACK_API_C( OSStatus , CEGetFirstTupleProc )(UInt32 socket, UInt32 device, PCCardTupleIterator lpTupleIterator, Byte desiredTuple, void *lptupleData, UInt32 *lpTupleBufferSize, Byte *lpFoundTuple);
  328. typedef CALLBACK_API_C( OSStatus , CEGetNextTupleProc )(PCCardTupleIterator lpTupleIterator, Byte desiredTuple, void *lptupleData, UInt32 *lpTupleBufferSize, Byte *lpFoundTuple);
  329.  
  330. struct PCCardEnablerPluginHeader {
  331.     UInt32                             pluginDispatchTableVersion;
  332.     UInt32                             reserved1;
  333.     UInt32                             reserved2;
  334.     UInt32                             reserved3;
  335. };
  336. typedef struct PCCardEnablerPluginHeader PCCardEnablerPluginHeader;
  337.  
  338. struct PCCardEnablerPluginDispatchTable {
  339.     PCCardEnablerPluginHeader         header;
  340.  
  341.                                                                 /* General functions*/
  342.     CEValidateHardwareProc             validateHardwareProc;
  343.     CEInitializeProc                 initializeProc;
  344.     CECleanupProc                     cleanUpProc;
  345.     CEPowerManagementProc             setPCCardPowerLevel;
  346.  
  347.                                                                 /* Card functions*/
  348.     CEHandleEventProc                 handleEventProc;
  349.     CEGetCardInfoProc                 getCardInfoProc;
  350.     CEAddCardPropertiesProc         addCardProperties;
  351.     CEGetDeviceCountProc             getDeviceCount;
  352.  
  353.                                                                 /* Device functions*/
  354.     CEGetDeviceNameProc             getDeviceName;
  355.     CEGetDeviceCompatibleProc         getDeviceCompatibleNames;
  356.     CEGetDeviceTypeProc             getDeviceType;
  357.     CEGetDeviceTypeNameProc         getDeviceTypeName;
  358.     CEAddDevicePropertiesProc         addDeviceProperties;
  359.     CEConfigureDeviceProc             configureDevice;
  360.     CEFinalizeDeviceProc             finalizeDevice;
  361.  
  362.                                                                 /* Card Services Overrides...*/
  363.     CEValidateCISProc                 validateCIS;
  364.     CEGetFirstTupleProc             getFirstTuple;
  365.     CEGetNextTupleProc                 getNextTuple;
  366.  
  367.                                                                 /* InterruptHandlers...*/
  368.     InterruptHandler                 cardInterruptHandlerFunction;
  369.     InterruptEnabler                 cardInterruptEnableFunction;
  370.     InterruptDisabler                 cardInterruptDisableFunction;
  371. };
  372. typedef struct PCCardEnablerPluginDispatchTable PCCardEnablerPluginDispatchTable;
  373. typedef PCCardEnablerPluginDispatchTable * PCCardEnablerPluginDispatchTablePtr;
  374. /*------------------------------------------------------------------------------------
  375.     PC Card Enabler Utility calls exported by the Family
  376. ------------------------------------------------------------------------------------*/
  377. /*    Generic Enabler Entrypoints*/
  378. EXTERN_API_C( OSStatus )
  379. CEInitializeCard                (const RegEntryID *        cardRef,
  380.                                  Boolean                 replacingOld);
  381.  
  382. EXTERN_API_C( OSStatus )
  383. CEFinalizeCard                    (const RegEntryID *        cardRef,
  384.                                  Boolean                 beingReplaced);
  385.  
  386. EXTERN_API_C( OSStatus )
  387. CEPowerManagement                (const RegEntryID *        lpParentID,
  388.                                  PCCardPowerOptions     powerLevel);
  389.  
  390. EXTERN_API_C( OSStatus )
  391. CEHandleCardEvent                (const RegEntryID *        cardRef,
  392.                                  PCCardEvent             lTheCardEvent);
  393.  
  394. EXTERN_API_C( OSStatus )
  395. CEGetCardInfo                    (const RegEntryID *        cardRef,
  396.                                  PCCardDevType *        cardType,
  397.                                  PCCardSubType *        cardSubType,
  398.                                  StringPtr                 cardName,
  399.                                  StringPtr                 vendorName);
  400.  
  401. EXTERN_API_C( OSStatus )
  402. CEAddCardProperties                (const RegEntryID *        cardRef);
  403.  
  404. EXTERN_API_C( OSStatus )
  405. CEGetDeviceCount                (const RegEntryID *        cardRef,
  406.                                  ItemCount *            numberOfDevices);
  407.  
  408. /* device functions*/
  409. EXTERN_API_C( OSStatus )
  410. CEGetDeviceName                    (UInt32                 socketNumber,
  411.                                  UInt32                 deviceNumber,
  412.                                  char *                    deviceName);
  413.  
  414. EXTERN_API_C( OSStatus )
  415. CEGetDeviceCompatibleNames        (const RegEntryID *        deviceRef,
  416.                                  UInt32                 socketNumber,
  417.                                  UInt32                 deviceNumber,
  418.                                  char *                    name);
  419.  
  420. EXTERN_API_C( OSStatus )
  421. CEGetDeviceType                    (const RegEntryID *        deviceRef,
  422.                                  UInt32                 socketNumber,
  423.                                  UInt32                 deviceNumber,
  424.                                  PCDeviceType *            lpDeviceType);
  425.  
  426. EXTERN_API_C( OSStatus )
  427. CEGetDeviceTypeName                (const RegEntryID *        deviceRef,
  428.                                  UInt32                 socketNumber,
  429.                                  UInt32                 deviceNumber,
  430.                                  char *                    name);
  431.  
  432. EXTERN_API_C( OSStatus )
  433. CEAddDeviceProperties            (const RegEntryID *        deviceRef,
  434.                                  UInt32                 deviceNumber);
  435.  
  436. EXTERN_API_C( OSStatus )
  437. CEConfigureDevice                (const RegEntryID *        deviceRef,
  438.                                  UInt32                 deviceNumber);
  439.  
  440. EXTERN_API_C( OSStatus )
  441. CEFinalizeDevice                (UInt32                 socket,
  442.                                  UInt32                 device,
  443.                                  const RegEntryID *        deviceRef);
  444.  
  445.  
  446. /*    RegEntryID <-> socket number mapping functions*/
  447. EXTERN_API_C( OSStatus )
  448. CEGetSocketAndDeviceFromRegEntry (const RegEntryID *    lpNode,
  449.                                  UInt32 *                lpSocket,
  450.                                  UInt32 *                lpDevice);
  451.  
  452. EXTERN_API_C( OSStatus )
  453. CEGetPhysicalSocketNumber        (const RegEntryID *        socketRef,
  454.                                  const RegEntryID *        lpDeviceEntry,
  455.                                  UInt32 *                lpPhysicalSocketNumber);
  456.  
  457. /*    Hardware Validation Utilities*/
  458. EXTERN_API_C( OSStatus )
  459. CECompareCISTPL_VERS_1            (const RegEntryID *        cardRef,
  460.                                  Byte                     majorVersion,
  461.                                  Byte                     minorVersion,
  462.                                  const char *            manufacturer,
  463.                                  const char *            productName,
  464.                                  const char *            info1,
  465.                                  const char *            info2,
  466.                                  Boolean *                identical);
  467.  
  468. EXTERN_API_C( OSStatus )
  469. CECompareCISTPL_MANFID            (const RegEntryID *        cardRef,
  470.                                  UInt16                 manufacturerCode,
  471.                                  UInt16                 manufacturerInfo,
  472.                                  Boolean *                identical);
  473.  
  474. EXTERN_API_C( OSStatus )
  475. CECompareMemory                    (const RegEntryID *        cardRef,
  476.                                  PCCardMemoryType         memType,
  477.                                  ByteCount                 offset,
  478.                                  ByteCount                 length,
  479.                                  Byte *                    dataToCompare,
  480.                                  Boolean *                identical);
  481.  
  482. EXTERN_API_C( OSStatus )
  483. CEValidateCIS                    (UInt32                 socket,
  484.                                  UInt32                 device,
  485.                                  UInt32 *                lpCISChainCount);
  486.  
  487. EXTERN_API_C( InterruptMemberNumber )
  488. CEDefaultInterruptHandler        (InterruptSetMember     ISTmember,
  489.                                  void *                    refCon,
  490.                                  UInt32                 theIntCount);
  491.  
  492.  
  493. /*------------------------------------------------------------------------------------
  494.     PC Card Customization Resources
  495. ------------------------------------------------------------------------------------*/
  496. enum {
  497.     kPCCardCustomInfoResType    = FOUR_CHAR_CODE('pccd'),
  498.     kPCCardCustomInfoVersion    = 0
  499. };
  500.  
  501.  
  502. struct PCCardCustomResource {
  503.     long                             version;
  504.     short                             customIconID;                /*    ICN#, etc. resource ID*/
  505.     short                             customStringsID;            /*    STR# resource ID*/
  506.     short                             customTypeStringIndex;
  507.     short                             customHelpStringIndex;
  508.     OSType                             customAction;
  509.     long                             customActionParam1;
  510.     long                             customActionParam2;
  511. };
  512. typedef struct PCCardCustomResource        PCCardCustomResource;
  513. #endif  /* !defined(__CARDSERVICES__) */
  514.  
  515.  
  516. #if PRAGMA_STRUCT_ALIGN
  517.     #pragma options align=reset
  518. #elif PRAGMA_STRUCT_PACKPUSH
  519.     #pragma pack(pop)
  520. #elif PRAGMA_STRUCT_PACK
  521.     #pragma pack()
  522. #endif
  523.  
  524. #ifdef PRAGMA_IMPORT_OFF
  525. #pragma import off
  526. #elif PRAGMA_IMPORT
  527. #pragma import reset
  528. #endif
  529.  
  530. #ifdef __cplusplus
  531. }
  532. #endif
  533.  
  534. #endif /* __PCCARDENABLERPLUGIN__ */
  535.  
  536.